---
---

嵌入式系统是指一个整体的形成嵌入式的硬件软件。嵌入式操作系统知识单指操作系统，是嵌入式系统的一部分。

## 嵌入式软件
嵌入式软件是指 <RedSpan>应用在嵌入式计算机系统中的各种软件</RedSpan>，除了具有通用软件的一般特性，还具有一些与嵌入式系统相关的特点，包括，<RedSpan>规模较小、开发难度大（无法跨平台，需要考虑硬件差异）、实时性和可靠性要求较高、要求固化存储</RedSpan>

### 嵌入式软件分类
* 系统软件：<RedSpan>控制和管理嵌入式</RedSpan>，为嵌入式应用提供支持的各种软件，如设备驱动程序、嵌入式操作系统、嵌入式中间件。
* 应用软件：嵌入式系统中的 <RedSpan>上层软件</RedSpan>，定义了嵌入式设备的主要功能和用途，并负责与用户交互，一般面向特定的应用领域，如飞行控制软件、手机软件、地图等。
* 支撑软件：<RedSpan>辅助软件开发的工具软件</RedSpan>，如系统分析设计工具、在线仿真工具、交叉编译器等。

### 板级支持包（BSP）
板级支持包（BSP） 是<RedSpan>介于主板硬件和操作系统中驱动层程序之间的一层，</RedSpan>一般认为它是操作系统的一部分，主要是实现对操作系统的支持，为上层的驱动程序提供访问硬件设备寄存器的函数包，使之能够更好的运行于硬件主板。

具体功能包括：
1. 单板硬件初始化：主要是 CPU 的初始化，为整个软件系统提供底层硬件支持。
2. 为操作系统提供设备驱动程序和系统中断服务程序。
3. 定制操作系统的功能，为软件系统提供一个实时多任务的运行环境。
4. 初始化操作系统，为操作系统的正常运行做好准备。

主要具有以下两个特点。
1. <RedSpan>硬件相关性</RedSpan>，因为嵌入式实时系统的硬件环境具有应用相关性，而作为上层软件与硬件平台之间的接口，BSP 需为操作系统提供操作和控制具体硬件的方法。
2. <RedSpan>操作系统相关性</RedSpan>，不同的操作系统具有各自的软件层次结构，因此不同操作系统具有特定的硬件接口形式。

一般来说，<RedSpan>BSP主要包括两个方面的内容：引导加载程序 BootLoader 和设备驱动程序</RedSpan>。

#### BootLoader
BootLoader 是嵌入式系统 <RedSpan>加电后运行的第一段软件代码</RedSpan>，是在操作系统内核运行之前运行的一小段程序，通过这段程序，可以 <RedSpan>初始化硬件设备、建立内存空间映射图，从而将系统的软硬件环境设置到一个合适的状态，以便为最终调用操作系统内核做好准备</RedSpan>。

一般包括以下功能：
* <RedSpan>片级初始化</RedSpan>：主要完成 <RedSpan>微处理器的初始化，包括设置微处理器的核心寄存器和控制寄存器、微处理器的核心工作模式及其局部总线模式等。</RedSpan>片级初始化把微处理器从上电时的默认状态逐步设置为系统所要求的工作状态。这是一个纯硬件的初始化过程。

* <RedSpan>板级初始化</RedSpan>：通过 <RedSpan>正确地设置各种寄存器的内容来完成微处理器以外的其它硬件设备的初始化</RedSpan>。例如，初始化  LEF 显示设备、初始化定时器、设置中断控制寄存器、初始化串口通信、初始化内存控制器、建立内存空间的地址映射等。在此过程中，除了要设置各种硬件寄存器以外，还要设置某些软件的数据结构和参数。因此，这是一个同时包含有软件和硬件在内的初始化过程。

* <RedSpan>加载内核（系统级初始化）</RedSpan>：将 <RedSpan>将操作系统和应用程序的映像从 Flash 存储器复制到系统的内存中</RedSpan>，然后跳转到系统内核的第一条指令处继续执行。
### 设备驱动程序
在一个嵌入式系统中，操作系统是可能有也可能无的。但是无论如何，<RedSpan>设备驱动程序是必不可少的</RedSpan>。所谓的设备驱动程序， <RedSpan>就是一组库函数，用来对硬件进行初始化和管理，并向上层提供良好的访问接口</RedSpan>。

对于不同的硬件设备来说，它们的功能是不一样的，所以它们的设别驱动程序也是不一样的。但是一般来说，大多数的设备驱动程序都会具备以下的一些基本功能。

* 硬件启动：在开机上电或系统重启的时候，对硬件进行初始化。
* 硬件关闭：将硬件设置为关机状态。
* 硬件停用：暂停使用这个硬件
* 硬件启用：重新启用这个硬件
* 读操作：从硬件中读取数据
* 写操作：往硬件中写入数据

## 嵌入式系统
### 嵌入式系统的组成
一般嵌入式系统由 <RedSpan>嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成。</RedSpan>
* 嵌入式处理器：由于嵌入式系统一般是在恶劣的环境条件下工作，与一般处理器相比，嵌入式处理器应可抵抗恶劣环境的影响，比如高温、寒冷、电磁、加速度等环境罂粟。为适应恶劣环境，嵌入式处理器除满足功耗低、体积小等需求外，根据不同的环境需求，其工艺可分为民用、工业和军用三个档次。
* 相关支撑软件：相关支撑硬件是指除嵌入式处理器以外的构成系统的其它硬件，包括存储器、定时器、总线、IO 接口以及相关专用硬件。
* 嵌入式操作系统：嵌入式操作系统是指运行在嵌入式系统中的基本软件，主要用于管理计算机资源和应用软件。与通用操作系统不同，嵌入式操作系统应具备实时性，可剪裁性和安全性等特征。
* 支撑软件：支撑软件是指为应用软件开发与运行提供公共服务、软件开发、调试能力的软件，支撑软件的公共服务通常运行在操作系统之上，以库的方式被应用软件所引用。
* 应用软件：应用软件是指为完成嵌入式系统的某一特定目标所开发的软件。


### 嵌入式系统特征
* <RedSpan>专用性强</RedSpan>: 嵌入式系统面向特定应用需求，能够把通用 CPU 中许多由板卡完成的任务集成在芯片内部，从而有利于嵌入式系统的小型化。
* <RedSpan>技术融合</RedSpan>：嵌入式系统将先进的计算机技术、通信技术、半导体技术和电子技术与各个行业的具体应用相结合，是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
* <RedSpan>软硬一体软件为主</RedSpan>：软件是嵌入式系统的主体，有 IP 和源代码两种。IP 是软件所依赖的硬件，源代码是软件所使用的源代码。IP 是软件所依赖的硬件，源代码是软件所使用的源代码。IP 是软件所依赖的硬件，源代码是软件所使用的源代码。IP 是软件所依赖的硬件，源代码是软件所使用的源代码。IP 是软件所依赖的硬件，源代码是软件所使用的源代码。IP 是软件所依赖的硬件，源代码是软件所使用的源代码。IP 是软件所依赖的硬件，源代码是软件所使用的源代码。IP 是软件所依赖的硬件，源代码是软件所使用的源代码